void CountingSort (SqList L, SqList *R, int k) 
        // L存储待排序列；R存储排序结果
{
    ElementType C[0..k];      //引入索引数组C
    for (i=0; i<=k; i++)   C[i]=0;   //初始化数组C
    for (i=1; i<=L.length; i++)
         C[L.elem[i]]++;         // C[i]中存值等于 i 的元素个数
    for (i=1; i<=k; i++) 
         C[i]=C[i]+C[i-1];       // C[i]中存值小于等于 i 的元素个数
    for (j=L.length; j>=1; j--)
    {
         R->elem[C[L.elem[j]]]=L.elem[j];
         C[L.elem[j]]--;  // 下一个值为L.elem[j]的元素被放到
                                    // L.elem[j]的前一个位置
    }
}